﻿var ns = namespace("kaskelot.sp.ui");

ns.byggnadlokaler = function () {

    var valdistrikt = null;

	function init() {
		if($("#ValdistriktId").val() === ""){
			getValdistrikt();
		}

		//$("#VisaKopplade").change(function () {
		//	getValdistrikt();
		//});

		$("#ForsamlingDropDownList").change(function () {
			getValdistrikt();
		});

		valdistrikt = $("#ValdistriktId").val();
	}

	function getList() {
		var id = getParameterByName('ByggnadId');

		$(".blockable-container").block({ message: null });

		$.ajax({
			url: L_Menu_BaseUrl + "/_vti_bin/Kaskelot.SP.Resources/ClientByggnadService.svc/GetLokalListByByggnad",
			type: "GET",
			data: { id: id },
			processData: true,
			cache: false,
			success:
				function (data) {
					if (!data.GetLokalListByByggnadResult.HasError) {
						$("#lokaler-list tbody").html(
							$("#lokaler-template").render(data.GetLokalListByByggnadResult.Data)
						);
					}
					$(".blockable-container").unblock();
				},
			error:
				function (xhr) {
					$(".blockable-container").unblock();
					kaskelot.sp.ui.prompts.showErrorPrompt(xhr.responseText);
				}
		});
	}

	function showEditForm(id) {
		var byggnadId = getParameterByName('ByggnadId');
		var lokalId = id;
		if (lokalId === undefined)
			lokalId = "";

		var selector = "#lokal-form";
		kaskelot.sp.ui.formutils.getAndShowForm({
			params: {
				formName: "LokalForm",
				idString: lokalId,
				parentIdString: byggnadId
			},
			selector: selector,
			openFunction: function () {
				$(".chzn-select-deselect").chosen({ allow_single_deselect: true, disable_search: true });
			},
			okFunction: function () {
				$(selector).parent().block();

				var prog = kaskelot.sp.ui.formutils.getObject(selector);
				var data = "{\"form\":" + JSON.stringify(prog) + "}";

				var method = "";
				if (lokalId === "")
					method = "CreateLokal";
				else
					method = "UpdateLokal";

				$.ajax({
					url: L_Menu_BaseUrl + "/_vti_bin/Kaskelot.SP.Resources/ClientByggnadService.svc/" + method,
					data: data,
					type: "POST",
					processData: false,
					contentType: "application/json",
					dataType: "json",
					success: function (resp) {
						if (resp[method + "Result"].HasError) {
							kaskelot.sp.ui.formutils.showError(selector, resp[method + "Result"].ErrorMessage);
						}
						else {
							getList();
							$(selector).dialog("close");
						}
					},
					error: function (xhr) {
						kaskelot.sp.ui.formutils.showError(selector, xhr.responseText);
					}
				});
			}
		});
	}

	function showDeleteForm(id) {
		var byggnadId = getParameterByName('ByggnadId');
		var lokalId = id;
		if (lokalId === undefined)
			lokalId = "";

		var selector = "#lokal-form";
		kaskelot.sp.ui.formutils.getAndShowForm({
			params: {
				formName: "LokalForm",
				idString: lokalId,
				parentIdString: byggnadId
			},
			selector: selector,
			openFunction: function () {
				$("#lokal-form #Namn").attr("disabled", "disabled");
				$("#lokal-form #Inaktiv").attr("disabled", "disabled");
				$("#lokal-form #ValdistriktId").attr("disabled", "disabled");
				$("#lokal-form #ForsamlingDropDownList").attr("disabled", "disabled");

				$(".chzn-select-deselect").chosen({ allow_single_deselect: true, disable_search: true });
			},
			okFunction: function () {
				$(selector).parent().block();

				var prog = kaskelot.sp.ui.formutils.getObject(selector);
				var data = "{\"form\":" + JSON.stringify(prog) + "}";

				var method = "DeleteLokal";

				$.ajax({
					url: L_Menu_BaseUrl + "/_vti_bin/Kaskelot.SP.Resources/ClientByggnadService.svc/" + method,
					data: data,
					type: "POST",
					processData: false,
					contentType: "application/json",
					dataType: "json",
					success: function (resp) {
						if (resp[method + "Result"].HasError) {
							kaskelot.sp.ui.formutils.showError(selector, resp[method + "Result"].ErrorMessage);
						}
						else {
							getList();
							$(selector).dialog("close");
						}
					},
					error: function (xhr) {
						kaskelot.sp.ui.formutils.showError(selector, xhr.responseText);
					}
				});
			}
		});
	}

	function getValdistrikt() {
		// Parametrar
	    var forsamling = $("#ForsamlingDropDownList").val();
		//var visaKopplade = $("#VisaKopplade").prop("checked");
		var list = $("#ValdistriktId");

		if (forsamling === "") {
			list.html("");
			list.attr("disabled", "disabled");
			list.trigger("liszt:updated");
			return;
		}

		$("#ValdistriktId_chzn").block({ message: "" });

		$.ajax({
			url: L_Menu_BaseUrl + "/_vti_bin/Kaskelot.SP.Resources/ClientByggnadService.svc/GetValdistrikt",
			type: "GET",
			data: { forsamlingId: forsamling, selectedId: valdistrikt, visaKopplade: "false" },
			processData: true,
			success:
				function (data) {
					if (!data.GetValdistriktResult.HasError) {
						var v = document.getElementById("ValdistriktId");
					    v.innerHTML = "";
					    //list.html("");

						for (var i = 0; i < data.GetValdistriktResult.Data.length; i++) {
							var opt = document.createElement("option");
							opt.value = data.GetValdistriktResult.Data[i].ValdistriktId;
						    opt.text = data.GetValdistriktResult.Data[i].ValdistriktNamn;
						    //var opt = $("<option value='" + data.GetValdistriktResult.Data[i].ValdistriktId + "'>" + data.GetValdistriktResult.Data[i].ValdistriktNamn + "</option>");

							v.options.add(opt, 0);
							//list.append(opt);
						}

						v.selectedIndex = -1;
						if (valdistrikt !== null) {
						    list.val(valdistrikt);
						}
					    
						//list.val("");
						list.removeAttr('disabled');
						list.trigger("liszt:updated");
					}
					$("#ValdistriktId_chzn").unblock();
				},
			error:
				function (xhr) {
					$("#ValdistriktId_chzn").unblock();
					kaskelot.sp.ui.prompts.showErrorPrompt(xhr.responseText);
				}
		});
	}

	return {
		init: init,
		getList: getList,
		showEditForm: showEditForm,
		showDeleteForm: showDeleteForm,
		getValdistrikt: getValdistrikt
	};
}();